Although the concept of Back-to-Back User Agents (B2BUAs) is not well defined by current Session Initiation Protocol (SIP) standards (e.g., RFC 3261, the entire contents of which are hereby incorporated herein by reference), there are other standards which provide helper classes to build B2BUAs. For instance, Java Specification Request (JSR) 289, the entire contents of which are incorporated herein by reference, provides helper classes for building B2BUAs. A B2BUA is defined by a SIP entity, which terminates a SIP dialog as a User Agent Server (UAS) and regenerates a SIP dialog as a User Agent Client (UAC) to manipulate SIP dialogs once a call is set up. The types of dialog manipulation that can be achieved with a B2BUA include, without limitation, media injection, session reconnection with other SIP dialogs, etc.
JSR289 provides B2BUA helper classes that are configured to create a B2BUA for a single invoked service; hence, if multiple services are desired for a communication session (e.g., as per communication preferences of the caller and/or callee), JSR 289 dictates that a separate B2BUA is created for each service. Each B2BUA is created using a B2BUAHelper class. Such a mechanism is very resource consuming and does not scale well on high loads.